package process

import (
	"fmt"
)

// 实例唯一，需要全局变量化
var (
	userMgr *UserMgr
)

type UserMgr struct {
	onlineUsers map[int]*AccountProcess
}

// 初始化
func init() {
	userMgr = &UserMgr{
		onlineUsers: make(map[int]*AccountProcess, 1024),
	}
}

// 添加在线用户
func (this *UserMgr) AddOnlineUser(ap *AccountProcess) {
	this.onlineUsers[ap.UserId] = ap
}

// 删除在线用户（退出）
func (this *UserMgr) DelOnlineUser(id int) {
	delete(this.onlineUsers, id)
}

// 查询所有在线用户列表
func (this *UserMgr) GetAllOnlineUser() map[int]*AccountProcess {
	return this.onlineUsers
}

// 根据编号查询在线用户
func (this *UserMgr) GetOnlineUserById(id int) (ap *AccountProcess, err error) {
	ap, is := this.onlineUsers[id]
	if !is {
		err = fmt.Errorf("当前用户:%d不在线！", id)
	}
	return
}
